var express = require('express')
var fs = require('fs');
var path = require('path');

//创建子路由对象(用来管理一部分后端路由)
var userRouter = express.Router()

//分页(查询)------------------------------------------------------------------
userRouter.get('/list', (req, res) => {
    //获取get类型请求的参数: req.query 
    var { page, count } = req.query;

    //读取users.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json');
    var arr = fs.readFileSync(filepath);
    arr = arr.toString() ? JSON.parse(arr) : []

    //分页
    var newarr = arr.slice((page - 1) * count, page * count);
    //返回数据
    res.send({ code: 200, msg: '请求成功!', list: newarr });
})

//模糊搜索----------------------------------------------------------------
userRouter.get('/search', (req, res) => {
    //接收参数
    var { searchkey } = req.query;

    //读取users.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json');
    var arr = fs.readFileSync(filepath);
    arr = arr.toString() ? JSON.parse(arr) : []

    //根据参数,从用户的name属性中过滤
    var newarr = arr.filter((item) => {
        return new RegExp(searchkey).test(item.name)
    })
    //返回数据
    res.send({ code: 200, msg: '查询成功!', list: newarr })
})

//登陆----------------------------------------------------------------
userRouter.post('/login', (req, res) => {
    //想要接收post类型请求的参数 必须提前设置能解析post请求参数的中间件 express.json 和 express.urlencoded 
    var { phone, pass } = req.body;
    //读取users.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json');
    var arr = fs.readFileSync(filepath);
    arr = arr.toString() ? JSON.parse(arr) : []
    //用来自客户端的数据 做判断, 判断是否在服务端的用户列表中
    var i = arr.findIndex((item, index) => {
        return item.phone == phone && item.pass == pass;
    })
    //如果i不是-1, 说明来自客户端的数据是合法的.
    if (i != -1) {
        //登陆成功时, 可以一并返回 登陆成功的用户信息,登陆令牌
        res.send({ code: 200, msg: '登陆成功!', userinfo: arr[i], token: '' });
    } else {
        res.send({ code: 400, msg: '登陆失败!' });
    }
})
//注册-----------------------------------------------------------------
userRouter.post('/register', (req, res) => {

    //获取注册相关的参数
    var { phone, pass, email, name } = req.body
    //读取users.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json');////======>
    var arr = fs.readFileSync(filepath);
    arr = arr.toString() ? JSON.parse(arr) : []
    //判断新用户是否已存在
    var i=arr.findIndex((item)=>{
        return item.phone==phone;
    });
    if (i != -1) {
        res.send({ code: 400, msg: '用户已存在，注册失败!' });
    } else {
        arr.push({...req.body,ingroup:'编辑组',isadmin:true,status:true})
        // fs.writeFileSync(写入的文件地址,字符串格式的json数据,编码方式？)
        fs.writeFileSync(filepath,JSON.stringify(arr),'utf-8')//<======
        res.send({ code: 200, msg: '注册成功!'});
    }
}
)

//删除----------------------------------------------------------
userRouter.post('/delete', (req, res) => {
    //获取手机号 参数
    var {phone}=req.body
    //读取users.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/users.json');////======>
    var arr = fs.readFileSync(filepath);
    arr = arr.toString() ? JSON.parse(arr) : []
    //在arr中查找手机号对应的用户
var i=arr.findIndex((item)=>{
    return item.phone==phone
})
if(i!=-1){//条件成立，说明找到了需要删除的用户，他在arr中的下标是i
    arr.splice(i,1)
    fs.writeFileSync(filepath,JSON.stringify(arr),'utf-8')//<======
    //分页
    var newarr=arr.slice(1,2)
    res.send({ code: 200, msg: '删除成功!',list:newarr});
}else {
    res.send({ code: 400, msg: '删除失败!'});
}
})

















// //注册----------------------------------------------------------------
// userRouter.post( '/register', (req,res)=>{
//     //获取注册相关的参数
//     var { phone } = req.body;//phone,pass,email,name

//     //读取users.json文件中的用户数据
//     var filepath = path.join( __dirname, '../json/users.json' );
//     var arr = fs.readFileSync(filepath);
//     arr = arr.toString()?JSON.parse( arr ): []

//     //判断新用户是否已存在
//     var i = arr.findIndex((item)=>{
//         return item.phone == phone;
//     });

//     if( i != -1 ){ //用户已存在,注册失败
//         res.send({ code:400,msg:'该手机号已注册,注册失败!' })
//     }else{
//         //添加新用户到users.json中
//         arr.push( {...req.body,ingroup:'编辑组',isadmin:true,status:true} )
//         fs.writeFileSync(filepath, JSON.stringify( arr ), 'utf8' );
//         res.send({ code:200,msg:'注册成功!' })
//     }
// })

// //删除----------------------------------------------------------------
// userRouter.post( '/delete' ,(req,res)=>{
//     //获取手机号 参数
//     var {phone} = req.body;

//     //读取users.json文件中的用户数据
//     var filepath = path.join( __dirname, '../json/users.json' );
//     var arr = fs.readFileSync(filepath);
//     arr = arr.toString()?JSON.parse( arr ): []

//     //在arr中查找手机号对应的用户
//     var i = arr.findIndex((item)=>{
//         return item.phone == phone;
//     })
//     if( i != -1 ){ //条件成立, 说明 找到了需要删除的用户.它在arr中的下标是 i
//         arr.splice( i, 1 );
//         fs.writeFileSync(filepath, JSON.stringify( arr ), 'utf8' );
//         //分页
//         var newarr = arr.slice( 0, 2 );
//         //返回删除后,第1页的新数据
//         res.send({ code:200,msg:'删除成功!',list: newarr })
//     }else{
//         res.send({ code:400,msg:'删除失败!' })
//     }
// })

//导出这个子路由对象
module.exports = userRouter;
